home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CICA 1993 April
/
CICA MS Windows - April 1993.iso
/
unzipped
/
programr
/
tp
/
wtch11
/
wtouch.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-04-30
|
6KB
|
208 lines
{**** WTouch 1.0 Copyright 1992 Doug Overmyer ********}
program WTouch;
{$R wtouch.RES}
uses WinTypes, WinProcs, WObjects, StdDlgs,Strings,windos,commdlg,
win31,sclptext;
const
WT_Name = 'WTouch';
id_StH = 101;
id_STJ = 201;
idm_WTChange = 301;
idm_WTShowHide=302;
um_ReSize = 401;
id_About = 501;
id_CMGetFiles =601;
id_CMDOIT = 602;
id_CMExit = 610;
{********************** TYPES ******************************}
type
TWTApp = object(TApplication)
procedure InitMainWindow; virtual;
end;
PWTWindow = ^TWTWindow;
TWTWindow = object(TWindow)
StH,StJ:PSText;
FilesBuf:PChar;
CurTime:LongInt;
constructor Init(ATitle: PChar);
destructor Done; virtual;
procedure SetupWindow;virtual;
procedure IDCMGetFiles(Var Msg:TMessage);virtual cm_First+id_CMGetFiles;
procedure IDCMDOIT(Var Msg:TMessage);virtual cm_First+id_CMDOIT;
procedure IDCMExit(Var Msg:TMessage);virtual cm_First+id_CMExit;
procedure SetHeader(Msg:Pchar);
procedure WMSysCommand(var Msg:TMessage);virtual wm_First+wm_SysCommand;
end;
{********************* Functions *******************************}
function StrTok(P:PChar;C:Char):PChar;
const
Next:Pchar = nil;
begin
if P = NIL then P := Next;
if P <> NIL then
begin
Next := StrScan(P,C);
If Next <> NIL then
begin
Next^ := #0;
Next := Next+1;
end;
end;
StrTok := P;
end;
{********************** METHODS ******************************}
procedure TWTApp.InitMainWindow;
begin
MainWindow := New(PWTWindow, Init(WT_Name));
end;
{********************** TWTWindow *******************************}
constructor TWTWindow.Init(ATitle: PChar);
var
Indx:Integer;
begin
TWindow.Init(nil, ATitle);
with Attr do
begin
X := 50; Y := 50; W := 305; H := 100;
Attr.Style := ws_Overlapped or ws_SysMenu or ws_MinimizeBox;
Menu := LoadMenu(hInstance,'WT_Menu');
end;
StH := New(PSText,Init(@Self,id_StH,'',15,30,275,20,sr_Recessed,
dt_Center or dt_VCenter or dt_SingleLine));
StJ := New(PSText,Init(@Self,id_StJ,'',15,5,275,20,sr_Recessed,
dt_Center or dt_VCenter or dt_SingleLine));
GetMem(FilesBuf,4096);
StrCopy(FilesBuf,'');
end;
destructor TWTWindow.Done;
begin
FreeMem(FilesBuf,4096);
TWindow.Done;
end;
procedure TWTWindow.SetupWindow;
var
SysMenu:HMenu;
begin
TWindow.SetupWindow;
SetClassWord(HWindow,GCW_HIcon,LoadIcon(HInstance,'WT_Icon'));
SetClassWord(HWindow,GCW_HBrBackground,GetStockObject(ltGray_Brush));
Sysmenu := GetSystemMenu(hWindow,false);
AppendMenu(SysMenu,MF_Separator,0,nil);
AppendMenu(Sysmenu,0,id_About,'About...');
SetHeader('');
end;
procedure TWTWindow.SetHeader(Msg:PChar);
var
Buf:Array[0..200] of Char;
DT:TDateTime;
Fil:Word;
begin
GetDate(DT.Year, DT.Month,DT.Day,fil);
GetTime(DT.Hour,DT.Min,DT.Sec,fil);
PackTime(DT,CurTime);
wvsprintf(Buf,'The file Date/Time stamp will be set to...',DT);
StJ^.SetText(Buf);
wvsprintf(Buf,'YMD:%u/%u/%u H:M:S %2u:%2u:%2u',DT);
StH^.SetText(Buf);
end;
procedure TWTWindow.IDCMGetFiles(var Msg:TMessage);
const
szFilter:Array[0..8] of Char ='*.*'#0'*.*'#0#0;
var
Path,Name,Ext,OldDir:Array[0..fsPathName] of Char;
szDirName:Array[0..256] of Char;
szFile,szFileTitle:Array[0..512] of Char;
OFN:TOpenFileName;
P:PChar;
begin
StrCopy(FilesBuf,'');
OFN.lStructSize := sizeof(TOpenFileName);
OFN.hWndOwner := HWindow;
OFN.lpStrFilter := @szFilter;
OFN.lpStrCustomFilter := nil;
OFN.nMaxCustFilter := 0;
OFN.nFilterIndex := LongInt(1);
OFN.lpStrFile := FilesBuf;
OFN.nMaxFile := 4096;
OFN.lpstrfileTitle := szFileTitle;
OFN.nMaxFileTitle := sizeof(szFileTitle);
OFN.lpstrInitialDir := NIL;
OFN.lpStrTitle := 'Select Files';
OFN.flags := OFN_ALLOWMULTISELECT;
OFN.nFileOffset := 0;
OFN.nFileExtension := 0;
OFN.lpstrDefext := nil;
GetOpenFileName(OFN)
end;
procedure TWTWindow.IDCMDOIT(var Msg:TMessage);
var
Path,PathName:Array[0..69] of Char;
FName:Array[0..18] of Char;
pResult:PChar;
Files:PStrCollection;
Indx:Integer;
F:File;
begin
if StrLen(FilesBuf) = 0 then {0 files - no cigar}
begin
MessageBox(HWindow,'Please select files first','Now get this...',mb_IconExclamation);
Exit;
end;
Files := New(PStrCollection,Init(10,10));
pResult := StrScan(FilesBuf,' ');
if pResult = NIL then {1 file only}
Files^.Insert(StrNew(FilesBuf))
else {2 or more }
begin
pResult := StrTok(FilesBuf,' '); {get the path}
StrCopy(Path,pResult);
SetCurDir(Path); {chdir there}
pResult := StrTok(NIL,' '); {get the 1st filename}
while pResult <> NIL do
begin
FileExpand(PathName,pResult); {expand file name}
Files^.Insert(StrNew(PathName)); {store it in collection}
pResult := StrTok(NIL,' '); {get next file name}
end;
end;
for Indx := 0 to (Files^.Count -1) do {process the selected files}
begin
pResult := Files^.At(Indx);
Assign(F,PResult);
Reset(F);
SetFTime(F,CurTime);
Close(F);
end;
Dispose(Files,Done); {clean up collection}
end;
procedure TWTWindow.IDCMExit(var Msg:TMessage);
begin
CloseWindow;
end;
procedure TWTWindow.WMSysCommand(var Msg:TMessage);
begin
case Msg.Wparam of
id_About:
application^.ExecDialog(New(PDialog,Init(@Self,'WT_About')));
else
DefWndProc(Msg);
end;
end;
{********************** MainLine *******************************}
var
WTApp: TWTApp;
begin
WTApp.Init(WT_Name);
WTApp.Run;
WTApp.Done;
end.